const app = getApp()
Page({

  timeInterval:null,

  /**
   * 页面的初始数据
   */
  data: {
    isHide_U: false, // 上传隐藏
    isHide_D: false, // 下载隐藏
    isHide_C: false,  // 完成隐藏（complished）

    // 由于传输列表的文件一般不会太多，此处省略了如main界面的渲染所需要的参数,比如transfile_U_view
    transfile_U: [], // 获取所有处于上传状态的文件
    transfile_D: [], // 获取所有处于下载状态的文件
    transfile_C: [], // 获取所有已经传输完毕的文件

    // 点击传输列表中的任意一个文件的文件信息，即clickfile为transfile_U D C中的一个元素
    // 若为U D中的一个元素，则需要实时更新，若为C，则不需要
    // clickfile: NaN

    thumbnail_up_URL: app.globalData.thumbnail_up_URL,
  },

  // backToMain: function () {
  //   wx.redirectTo({
  //     url: '../main/main',
  //   })
  //   // 这里手动关闭
  //   clearInterval(this.timeInterval)
  // },

  showDetail_u: function (e) {

    var transfile_u = e.currentTarget.dataset.file
    // 转换成字符串传送
    wx.navigateTo({
      // 使用URI组件编码，为了避免src中的特殊字符带来的问题
      url: './detail_u/detail_u' + "?transfile_u=" + encodeURIComponent(JSON.stringify(transfile_u)) ,
    })
  },
  

  changeHideMode_U: function () {
    this.setData({ isHide_U: !this.data.isHide_U })
  },
  changeHideMode_D: function () {
    this.setData({ isHide_D: !this.data.isHide_D })
  },
  changeHideMode_C: function () {
    this.setData({ isHide_C: !this.data.isHide_C })
  },

  
  // （实时性）渲染整个传输列表页面，包括上传，下载，完成
  timeOutEvent: function () {
    if (!this.data.isHide_U) {
      this.getTransList_U()
      this.setData({
        transfile_U: this.data.transfile_U
      })
    }
    if (!this.data.isHide_D) {
      this.setData({
        transfile_D: this.data.transfile_D
      })
    }
    if (!this.data.isHide_C) { 
      this.setData({
        transfile_C: this.data.transfile_C
      })
    }
    console.log("translists：执行操作")
  },
  // 将传输列表中的接收的值 做转换 转换成显示的信息
  loadTransList_U: function () {
    // 每次渲染前，需要获得相应的数据
    for(var i = 0; i < this.data.transfile_U.length; i++) {
      // 根据状态码code 获得文字类型的状态 如正在上传
      this.data.transfile_U[i].status = app.convertCode(this.data.transfile_U[i].code)
      // 根据速度大小和速度单位，得到渲染时的速度 
      // TODO 目前都是KB/s，这个需要和后台进行协商，将速度，大小等和B有关的，交给前端转换
      this.data.transfile_U[i].speed = this.data.transfile_U[i].speed + this.data.transfile_U[i].speedUnit
      // 获取云的碎片信息的渲染内容
      this.data.transfile_U[i].cloudInfo = '碎片总数（' + this.data.transfile_U[i].transedNumber + '/' + this.data.transfile_U[i].totalNumber +'）'
      // 获取已上传字节大小和总字节大小的渲染内容(30.98MB/98.09MB)
      // this.data.transfile_U[i].sizeInfo = this.data.transfile_U[i].size + '/' + this.data.transfile_U[i].size
      this.data.transfile_U[i].sizeInfo = '0/0'
      var originFileName = this.data.transfile_U[i].originFileName
      this.data.transfile_U[i].imagetype = app.chooseTypeImage(
        originFileName.substring(originFileName.lastIndexOf(".") + 1))
      this.data.transfile_U[i].src = this.data.thumbnail_up_URL + "/" + this.data.transfile_U[i].originFileName + "?cipherOpenid=" + app.globalData.cipherOpenid
        
    }
    this.setData({
      transfile_U: this.data.transfile_U
    })
  },
  
  getTransList_U: function () {
    var _this = this
    wx.request({
      url: app.globalData.queryTransList_U_URL,
      header: { Cookie: app.globalData.cookie },
      success: function (res) {
        if (res.length != 0) {
          // 手动清理先前数组
          _this.data.transfile_U.splice(0, _this.data.transfile_U.length);
          // 将字符串形式的对象数组 转换成JSON数组
          _this.data.transfile_U = JSON.parse(res.data)
          // 将接收到的信息 转换成 需要显示的信息
          _this.loadTransList_U();
        }
      },
      fail: function () {
        wx.showToast({
          title: '网络加载失败....',
          duration: '2000'
        })
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var _this = this
    this.timeInterval = setInterval(function () {
      _this.timeOutEvent()
    }, 1000)    //代表1秒钟发送一次请求
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    console.log("***********************************ready")
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    console.log("***********************************show")
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () { // wx.navigateTo，不会关闭本页面，只是隐藏，故执行该方法。若是自己编写的跳转，则为隐藏，比如backToMain()
    // clearInterval(this.timeInterval)
    console.log("***********************************hide")
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () { // wx.redirectTo，关闭本页面，为卸载。page栈里面去掉的，为卸载。具体操作，就是点击微信自带的向前的符号
    clearInterval(this.timeInterval)
    console.log("***********************************unload")
    // TODO 清除后台中 传输完成的内存文件信息
    this.clearTransSuccessInfo()
  },

  clearTransSuccessInfo() {
    var transedSuccessFMIDs = []
    var transfile_U = this.data.transfile_U
    var transfile_D = this.data.transfile_D
    for (var i in transfile_U) {
      console.log(transfile_U[i].progress)
      if(transfile_U[i].progress == "100%"){
        transedSuccessFMIDs.push(transfile_U[i].FMID);
      }
    } 
    for (var i in transfile_D) {
      console.log(transfile_D[i].progress)
      if (transfile_D[i].progress == "100%") {
        transedSuccessFMIDs.push(transfile_D[i].FMID);
      }
    } 
    
    console.log("trans:" + JSON.stringify(transedSuccessFMIDs))

    wx.request({
      url: app.globalData.clearMemoryFileInfo_URL,
      header: { Cookie: app.globalData.cookie },
      data: {
      //数据urlencode方式编码，变量间用&连接，再post
        'transedSuccessFMIDs': transedSuccessFMIDs
      },
      method: 'POST',
      // header: {
      //   'content-type':'application/x-www-form-urlencoded'
      // },
      success: function (res) {
        if (res.data.ret == 200) {
          console.log('success to clear')
        }
        else {
        }
      }
    })

  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})


